package com.metier;

import java.awt.GridLayout;
import java.io.File;
import java.util.List;

import javax.swing.JOptionPane;
import javax.swing.JTable;
import javax.swing.table.DefaultTableModel;

import com.beans.Users;
import com.dao.UsersDao;
import com.gui.FenMain;
import com.gui.PanelConsultant;

public class UsersMetier {

	UsersDao userDao;
	private String admin = "administrateur";
	private String compt = "comptable";
	private String agentComm = "agent commercial";
	private String consult = "consultant";

	Users users;
	String profilCorrespondant, identifiantCorrespondant;

	public String getProfilCorrespondant() {
		return profilCorrespondant;
	}

	public void setProfilCorrespondant(String profilCorrespondant) {
		this.profilCorrespondant = profilCorrespondant;
	}

	public UsersMetier() {
		userDao = new UsersDao();
		users = new Users();

	}

	// la methode de la couche métier correspondant à la verification de l'accés à la base 
	public void testConnect(String login, String passwd) {
		// on visualise le login et le password recupéré dans la fenetre
		// FenLogin saisis par le user
		System.out.println("login " + login + " and passwd " + passwd);

		boolean conectExistUser = userDao.connect(login, passwd);

		if (conectExistUser == true) {
			FenMain fenMain = new FenMain();
			fenMain.setLogrecuperer(login);
			CraMetier crametier = new CraMetier() ;
			crametier.setLogrecuperer(login);

			profilCorrespondant = userDao.findProfil(login);
			identifiantCorrespondant = userDao.afficheIdentifiant(login);

			fenMain.getLabelConnecter().setText(
					"           CONNECTER EN TANT QUE :  " + profilCorrespondant);
			fenMain.getLabelBienVenue().setText(
					"            BIENVENUE DANS VOTRE ESPACE DE TRAVAIL PERSONNEL: "
							+ identifiantCorrespondant);
			File fichier= new File("src/main/java/com/photos/"+login+".jpg");
			if (fichier.exists())
			fenMain.getLabelProfil().setIcon(
					new javax.swing.ImageIcon("src/main/java/com/photos/"+ login + ".jpg"));
			else
			
							fenMain.getLabelProfil().setIcon(                                                          
									new javax.swing.ImageIcon("src/main/java/com/photos/profil1.gif"));
			if (profilCorrespondant.equalsIgnoreCase(admin)) {

				fenMain.getPanGaucheFenMain().removeAll();
				fenMain.getPanGaucheFenMain().setLayout(new GridLayout(8, 1));
				fenMain.getPanGaucheFenMain().add(fenMain.getButtonAceuil());
				fenMain.getPanGaucheFenMain().add(
						fenMain.getBoutonUtilisateur());
				fenMain.getPanGaucheFenMain().add(
						fenMain.getButtonGestionProjets());
				

				fenMain.getPanGaucheFenMain().add(fenMain.getBoutonAo());

				fenMain.getPanGaucheFenMain().add(fenMain.getBoutonProspect());
				fenMain.getPanGaucheFenMain().add(fenMain.getButtonMonCompte());

				fenMain.setVisible(true);

			} else if (profilCorrespondant.equalsIgnoreCase(agentComm)) {

				fenMain.getPanGaucheFenMain().removeAll();
				fenMain.getPanGaucheFenMain().setLayout(new GridLayout(8, 1));
				fenMain.getPanGaucheFenMain().add(fenMain.getButtonAceuil());
				fenMain.getPanGaucheFenMain().add(fenMain.getBoutonAo());

				fenMain.getPanGaucheFenMain().add(fenMain.getBoutonProspect());
				fenMain.getPanGaucheFenMain().add(fenMain.getButtonMonCompte());

				fenMain.setVisible(true);

			} else if (profilCorrespondant.equalsIgnoreCase(compt)) {

				fenMain.getPanGaucheFenMain().removeAll();
				fenMain.getPanGaucheFenMain().setLayout(new GridLayout(8, 1));
				fenMain.getPanGaucheFenMain().add(fenMain.getButtonAceuil());
				fenMain.getPanGaucheFenMain().add(fenMain.getBoutonEntrees());
				fenMain.getPanGaucheFenMain().add(fenMain.getBoutonSorties());
				fenMain.getPanGaucheFenMain().add(fenMain.getButtonMonCompte());

				fenMain.setVisible(true);

			} else {

				fenMain.getPanGaucheFenMain().removeAll();
				fenMain.getPanGaucheFenMain().setLayout(new GridLayout(8, 1));
				fenMain.getPanGaucheFenMain().add(fenMain.getButtonAceuil());
				//fenMain.getPanGaucheFenMain().add(fenMain.getBoutonConge());
				fenMain.getPanGaucheFenMain().add(fenMain.getBoutonCra());
				fenMain.getPanGaucheFenMain().add(fenMain.getButtonMonCompte());

				fenMain.setVisible(true);

			}

		} else {
			JOptionPane.showMessageDialog(null, "Login ou Password incorrecte");
		}

	}

	// méthode de la couche métier permettant de lister les users et qui
	// retourne un listeUsers de la base
	public List<Users> chargerAllUsers() {

		List<Users> listUsers = userDao.selectAllUsers();

		return listUsers;
	}
 
	// méthode de la couche métier permettant de lister les users en fonction du champ nom
	
		public List<Users> chargerAllUserByNom(String nomRechercher) {

			List<Users> listUsers = userDao.findUserByNom(nomRechercher);

			return listUsers;
		}
		
		
		// méthode de la couche métier permettant de lister les users en fonction du champ prenom
		
			public List<Users> chargerAllUserByPrenom(String prenomRechercher) {

				List<Users> listUsers = userDao.findUserByPrenom(prenomRechercher);

				return listUsers;
			}
		
		

	public void addUsersMetier(String userNom, String userPrenom,
			String userLogin, String userEmail, String userPasswd,
			String userPhone, String userProfil, String userAdresse) {
		Users userAjouter = new Users();
		userAjouter.setUsrNom(userNom);
		userAjouter.setUsrPrenom(userPrenom);
		userAjouter.setUsrLogin(userLogin);
		userAjouter.setUsrEmail(userEmail);
		userAjouter.setUsrPasswd(userPasswd);
		userAjouter.setUsrPhone(userPhone);
		userAjouter.setUsrProfil(userProfil);
		userAjouter.setUsrAdresse(userAdresse);
		userDao.addUsers(userAjouter);

	}
	public void updateUsersMetier(String userNom, String userPrenom,
			String userLogin, String userEmail, String userPasswd,
			String userPhone, String userProfil, String userAdresse) {
		Users userAjouter = new Users();
		userAjouter.setUsrNom(userNom);
		userAjouter.setUsrPrenom(userPrenom);
		userAjouter.setUsrLogin(userLogin);
		userAjouter.setUsrEmail(userEmail);
		userAjouter.setUsrPasswd(userPasswd);
		userAjouter.setUsrPhone(userPhone);
		userAjouter.setUsrProfil(userProfil);
		userAjouter.setUsrAdresse(userAdresse);
		userDao.updateUsers(userAjouter);

	}

	public Users findUserByLogin(String login) {
		Users user = new Users();
		user = userDao.findUsers(login);
		return user;

	}
	public List<Users> findUsersByTexteSaisie( String texte){
	  return userDao.findUsersByText(texte);
	}

	// methode pour la suppression d'un user et qui retourne un boolean
	public boolean testDelete(Users user) {
		boolean canDeleted = userDao.deleteUsers(user);
		return canDeleted;
	}

	// methode pour la mise à jour
	public boolean testUpdate(Users user) {
		boolean canUpdate = userDao.updateUsers(user);
		return canUpdate;

	}
	
	
	public void modifierCompteSansPassword(String log,String phone,String adresse){
		UsersDao usersDao= new UsersDao();
		Users users=usersDao.findUsers(log);
		users.setUsrPhone(phone);
		users.setUsrAdresse(adresse);
		usersDao.updateUsers(users);
	}

	public boolean modifierCompte(String log,String phone,String adresse, String pass, String passNew){
		UsersDao usersDao= new UsersDao();
		Users users=usersDao.findUsers(log);
		if (users.getUsrPasswd().equals(pass)){
		users.setUsrPhone(phone);
		users.setUsrAdresse(adresse);
		users.setUsrPasswd(passNew);
		usersDao.updateUsers(users);
		return true;
		}
		else
			return false;
	}
}
